import type { AppRouteModule } from '/@/router/types';

import { getParentLayout, LAYOUT } from '/@/router/constant';
import { RoleEnum } from '/@/enums/roleEnum';
import { t } from '/@/hooks/web/useI18n';

const permission: AppRouteModule = {
   path: '/permission',
   name: 'Permission',
   component: LAYOUT,
   redirect: '/permission/front/page',
   meta: {
      orderNo: 15,
      icon: 'ion:key-outline',
      title: t('routes.demo.permission.permission'),
   },

   children: [
      {
         path: 'front',
         name: 'PermissionFrontDemo',
         component: getParentLayout('PermissionFrontDemo'),
         meta: {
            title: t('routes.demo.permission.front'),
         },
         children: [
            {
               path: 'page',
               name: 'FrontPageAuth',
               component: () => import('/@/views/demo/permission/front/index.vue'),
               meta: {
                  title: t('routes.demo.permission.frontPage'),
               },
            },
            {
               path: 'btn',
               name: 'FrontBtnAuth',
               component: () => import('/@/views/demo/permission/front/Btn.vue'),
               meta: {
                  title: t('routes.demo.permission.frontBtn'),
               },
            },
            {
               path: 'auth-pageA',
               name: 'FrontAuthPageA',
               component: () => import('/@/views/demo/permission/front/AuthPageA.vue'),
               meta: {
                  title: t('routes.demo.permission.frontTestA'),
                  roles: [RoleEnum.SUPER],
               },
            },
            {
               path: 'auth-pageB',
               name: 'FrontAuthPageB',
               component: () => import('/@/views/demo/permission/front/AuthPageB.vue'),
               meta: {
                  title: t('routes.demo.permission.frontTestB'),
                  roles: [RoleEnum.TEST],
               },
            },
         ],
      },
      {
         path: 'back',
         name: 'PermissionBackDemo',
         component: getParentLayout('PermissionBackDemo'),
         meta: {
            title: t('routes.demo.permission.back'),
         },
         children: [
            {
               path: 'page',
               name: 'BackAuthPage',
               component: () => import('/@/views/demo/permission/back/index.vue'),
               meta: {
                  title: t('routes.demo.permission.backPage'),
               },
            },
            {
               path: 'btn',
               name: 'BackAuthBtn',
               component: () => import('/@/views/demo/permission/back/Btn.vue'),
               meta: {
                  title: t('routes.demo.permission.backBtn'),
               },
            },
         ],
      },
   ],
};

export default permission;
